home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / gtkmm-2.4 / proc / m4 / convert_base.m4 < prev    next >
M4 Source File  |  2006-04-20  |  2KB  |  70 lines

  1. dnl $Id: convert_base.m4,v 1.1.1.1 2003/01/21 13:41:24 murrayc Exp $
  2.  
  3. #
  4. #  Define a hashing for names
  5. #
  6. define(`__HASH',`__`'m4_translit(`$*',`ABCDEFGHIJKLMNOPQRSTUVWXYZ<>[]&*, ',`abcdefghijklmnopqrstuvwxyzVBNMRSC_')`'')
  7. define(`__EQUIV',`m4_ifdef(EV`'__HASH(`$1'),EV`'__HASH(`$1'),`$1')')
  8.  
  9. define(`__HASH2',`dnl
  10. pushdef(`__E1',__EQUIV(`$1'))pushdef(`__E2',__EQUIV(`$2'))dnl
  11. m4_ifelse(__E1,__E2,`__EQ',__HASH(__E1)`'__HASH(__E2))`'dnl
  12. popdef(`__E1')popdef(`__E2')`'')
  13.  
  14. define(`CF__EQ',`$3')
  15.  
  16. #
  17. #  _CONVERT(ctype, cpptype, name, wrap_line)
  18. #    Print the conversion from ctype to cpptype
  19. define(`_CONVERT',`dnl
  20. pushdef(`__COV',`CF`'__HASH2(`$1',`$2')')dnl
  21. m4_ifdef(__COV,`m4_indir(__COV,`$1',`$2',`$3')',`
  22. m4_errprint(`No conversion from $1 to $2 defined (line: $4, parameter name: $3)
  23. ')
  24. m4_m4exit(1)
  25. ')`'dnl
  26. ')
  27.  
  28.  
  29. #
  30. #  Functions for populating the tables.
  31. #
  32. define(`_CONVERSION',`
  33. m4_ifelse(`$3',,,`define(CF`'__HASH2(`$1',`$2'),`$3')')
  34. ')
  35.  
  36. define(`_EQUAL',`define(EV`'__HASH(`$1'),`$2')')
  37.  
  38. /*******************************************************************/
  39.  
  40.  
  41. define(`__ARG3__',`$`'3')
  42. define(`_CONV_ENUM',`dnl
  43. _CONVERSION(`$1$2', `$2', (($2)(__ARG3__)))
  44. _CONVERSION(`$1$2', `$1::$2', (($1::$2)(__ARG3__)))
  45. _CONVERSION(`$2', `$1$2', (($1$2)(__ARG3__)))
  46. _CONVERSION(`$1::$2', `$1$2', (($1$2)(__ARG3__)))
  47. ')dnl
  48.  
  49. # e.g. Glib::RefPtr<Gdk::Something> to GdkSomething*
  50. define(`__CONVERT_REFPTR_TO_P',`Glib::unwrap($`'3)')
  51.  
  52. # e.g. Glib::RefPtr<const Gdk::Something> to GdkSomething*
  53. #define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>($`'3->gobj())')
  54. define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>(Glib::unwrap($`'3))')
  55.  
  56. # The Sun Forte compiler doesn't seem to be able to handle these, so we are using the altlernative,  __CONVERT_CONST_REFPTR_TO_P_SUN.
  57. # The Sun compiler gives this error, for instance:
  58. #á "widget.cc", line 4463: Error: Overloading ambiguity between "Glib::unwrap<Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)" and
  59. # "Glib::unwrap<const Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)".
  60. #
  61. define(`__CONVERT_CONST_REFPTR_TO_P_SUN',`const_cast<$`'2>(Glib::unwrap<$1>($`'3))')
  62.  
  63.  
  64. include(convert_gtk.m4)
  65. include(convert_pango.m4)
  66. include(convert_gdk.m4)
  67. include(convert_atk.m4)
  68. include(convert_glib.m4)
  69.  
  70.